<?php
// 应用公共文件
/**
 * 	创建数据缓存
 *	@param	$result
 *	@param	$cache_name
 *	@param	$by_filed
 */
function get_cache_data($result, $cache_name, $by_filed='') {
    if ($cache_name != '') {
        if (!cache($cache_name)) {
            $cache_data = array();
            foreach ( $result as $row ) {
                if ($by_filed == '') {
                    $cache_data [$row ['id']] = $row;
                } else {
                    $cache_data [$row [$by_filed]] [] = $row;
                }
            }
            cache($cache_name, $cache_data);
        }
        return cache($cache_name);
    }
}

/**
 * 获取后台管理菜单缓存
 */
function get_navigation_cache($id=''){
    $cache_name='navigation_data';
    if(!cache($cache_name)){
        $sitedb=new \mylibrary\Database();
        $sitedb->map_eq("is_hid",0);
        $sitedb->map_eq("is_del",0);
        $sitedb->order_desc("sort");
        $sitedb->order_asc("id");
        $result=$sitedb->select("navigation")->toArray();
        $cache_result=get_cache_data($result,$cache_name);
    }else{
        $cache_result=cache($cache_name);
    }
    if($id!=''){
        $cache_result[$id];
    }
    return $cache_result;
}

/**
 * 写文件
 * @time 2015-05-19
 * @param string $file 要写入的文件路径
 * @param array $data 要写入的数据
 * @param string $mode 文件打开模式，读写方式打开，将文件指针指向文件末尾。（fopen）
 * @author	秦晓武
 */
function write_file($file='', $data,$mode = 'a+'){
    if($data == ''){
        return '';
    }
    $dir=RUNTIME_PATH.'Debug'.DIRECTORY_SEPARATOR;
    if(!is_dir($dir) && !mkdir($dir)) return false;
    $log_file=$dir.$file;
    $fp = fopen($log_file,$mode);
    if($fp){
        if(is_array($data)){
            foreach($data as $row){
                $flag = fwrite($fp,$row);
                if(!$flag){
                    return 'TIP_ERROR_INFO';
                }
            }
        }else{
            $flag = fwrite($fp,$data);
            if(!$flag){
                return 'TIP_ERROR_INFO' . $data;
            }
        }
    }else{
        return "TIP_ERROR_INFO: " . $file;
    }
    fclose($fp);
}

/**
 * 	返回路径中的参数
 *	@param	$add 需要添加的参数
 *	@param	$del 需要过滤掉的参数，使用逗号分隔
 * 	@return 参数数组
 * 	@example 说明：给url添加排序条件sort，同时删除掉url中的category和author参数及它们的值
 *   I("index",param(array('sort'=>'id'),'category,author'))
 */
function param($add = array(), $del = '') {
    $arr = array_merge ( input ( 'get.' ), $add );
    unset($arr['s']);
    $delArr = explode ( ',', $del );
    foreach ( $delArr as $val ) {
        unset ( $arr [$val] );
    }
    return $arr;
}
/*
 * 通用分类缓存获取
 * $type 	分类类型，对应数据表中的type，不同类型的分类分别缓存，降低性能带来的影响
 * $id 		分类ID，根据ID获取分类信息
 */
function category_cache($type='',$id=''){
    $cache_name='category_'.$type.'_cache';
    if(!cache($cache_name)){
        $sitedb=new \mylibrary\Database();
        $sitedb->map_eq("is_hid",0);
        $sitedb->map_eq("is_del",0);
        $sitedb->map_eq("type",$type);
        $sitedb->order_desc("sort");
        $sitedb->order_asc("id");
        $result=$sitedb->select("category")->toArray();
        $cache_result=get_cache_data($result,$cache_name);
    }else{
        $cache_result=cache($cache_name);
    }
    if($id!=''){
        return $cache_result[$id];
    }
    return $cache_result;
}